home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / FREENET / MELL / NETLIB00 / NetLib / hdr / Vars < prev   
Encoding:
Text File  |  1996-02-08  |  1.0 KB  |  63 lines

  1. ;
  2. ; This is the code for storing a1 in errno - the SharedCLibrary's
  3. ; variable.  If $modulecode is defined, then the appropriate relocation
  4. ; is performed too
  5. ;
  6.  
  7.     IMPORT    |__errno|
  8.  
  9.     MACRO
  10.     StoreErrno    $Temp1, $Temp2
  11.  
  12.     ASSERT    $Temp1 <> a1
  13.     ASSERT    $Temp2 <> a2
  14.     ASSERT    $Temp1 <> $Temp2
  15.  
  16.     LDR    $Temp1, =|__errno|    ; find address of errno
  17.     [    "$ModuleCode" = "yes"
  18.     LDR    $Temp2, [sl, #-536]    ; if we are a module, find offset
  19.     STR    a1, [$Temp1, $Temp2]    ; store errno in offset location.
  20.     |
  21.     STR    a1, [$Temp1, #0]    ; else just store error in __errno
  22.     ]
  23.     MOV    a1, #-1            ; system call return value for error
  24.     MEND
  25.  
  26.     MACRO
  27.     EnterSVC
  28.  
  29.     [    "$ModuleCode" <> "yes"
  30.     STMFD    sp!, {sl,lr}
  31.     MOV    sl, #3
  32.     AND    sl, sl, pc
  33.     SWI    XOS_EnterOS
  34.     MOV    a1, a1
  35.     STMFD    sp!, {sl}
  36.     ]
  37.     MEND
  38.  
  39.     MACRO
  40.     ExitSVC
  41.  
  42.     [    "$ModuleCode" <> "yes"
  43.     LDMFD    sp!, {sl}
  44.     ]
  45.     LDRVS    a1, [a1, #0]        ; retrieve errno from os_error.errnum
  46.     [    "$ModuleCode" <> "yes"
  47.     ORRVS    sl, sl, #1<<28
  48.     TEQP    pc, sl
  49.     MOV    a2, a2            ; no-op
  50.     LDMFD    sp!, {sl,lr}
  51.     ]
  52.     MEND
  53.  
  54.     MACRO
  55.     CallSWI    $swiname
  56.  
  57.     EnterSVC
  58.     SWI    $swiname
  59.     ExitSVC
  60.     MEND
  61.  
  62.     END
  63.